The proliferation of servers for various tasks in the enterprise, e-commerce and Internet service provider domains has led to great scalability and manageability challenges. Today, most e-businesses deploy multiple servers devoted to Web, File Transfer Protocol (FTP), Domain Name Service (DNS), e-mail, secure socket layer and other such applications. However, although clustering has long held the promise of scalability and availability, it remains a distant dream and is very complex to configure and manage.
A server farm is a group of computers acting as servers housed together in a single location. A server farm is sometimes called a server cluster. A Web server farm is either (1) a Web site that has more than one server, or (2) an Internet service provider that provides Web hosting services using multiple servers. A server farm streamlines internal processes by distributing the workload between the individual components of the farm and expedites computing processes by harnessing the power of multiple servers. The farms rely on load balancing software that accomplishes such tasks as tracking demand for processing power from different machines, prioritising the tasks and scheduling and rescheduling them depending on the priority and the demand that users put on the network. When one server in the farm fails, another can step in as a backup. The servers are connected to at least one router. A router is a device or, in some cases, software in a computer that determines the next network point to which a packet should be forwarded toward its destination. The router is connected to at least two networks and it decides which way to send each information packet based on its current understanding of the state of the networks it is connected to.
Combining servers and processing power into a single entity has been relatively common for many years in research and academic institutions. Today, more and more companies are utilising server farms as a way of handling the enormous amount of computerisation of tasks and services that they require.
Load balancing is dividing the amount of work that a computer or processor has to do between two or more computers or processors so that more work gets done in the same amount of time and, in general, all users get served faster. Load balancing can be implemented with hardware, software, or a combination of both. Typically, load balancing is the main reason for computer server clustering.
Load balancing is also distributing processing and communications activity evenly across a computer network so that no single device is overloaded. Load balancing is especially important for networks where it is difficult to predict the number of requests that will be issued to a serverserver.html. Busy Web sites typically employ two or more Web servers in a load balancing scheme. If one server starts to get swamped, requests are forwarded to another server with more capacity. Load balancing can also refer to the communications channels themselves.
Load balancers support different load balancing techniques, which can be simple to set up and configure, yet powerful enough to use the full potential of all servers. Several load balancing or sharing methods are available, using common algorithms developed in studies of buffering and traffic distribution:                Round robin. Assigns connections sequentially among servers in a logical community.        Least connections. The server with the least number of connections gets the next connection.        Weighted distribution. Divides the load among the servers based on user-supplied percentage or weight.        
Weighted methods can be used to ensure that high-performance servers receive more of the traffic load. That provides investment protection by leveraging existing servers along with powerful new servers.
Each server can also be set up for the maximum total number of connections it can handle to make sure it does not ever get overloaded. In the case of overflow or complete local server farm outage, the load balancer can send the requests transparently to remote backup servers or does an HTTP redirect to a remote server.
Server Farm load balancing is usually done above network layer by using more or less dedicated nodes (edge-servers etc.) that use specific signalling and algorithms to balance load between servers “behind” it. Simple Round robin algorithm is one that is used. More advanced edge-router solutions have also signalling between separate server farms (between edge-routers). The Internet-Draft “Analysis of DNS Server Discovery Mechanisms for IPv6” conveys the following solution for handling load balancing for DNS servers on network layer: “Regarding to the load balancing among DNS servers, If we need to implement a perfect load balancing among DNS servers (equal load onto each DNS servers), we should just put DNS servers onto a single IPv6 subnet. Neighbor discovery for anycast address should take care of it. Refer to [RFC 2461], section 7.2.7.”
Actually, this solution more like “shares” the load, not balances it. A node responds to the Neighbour Solicitation message from its neighbor node by sending a randomly delayed Neighbour Advertisement message (based on RFC 2461). This means that there is no correlation between the most available server and the first responding server.
Reliable and optimized use of server farms in networks is a well-known problem. How to balance load of servers so that each server is doing its best and that the service servers are providing is robust and reliable. Various types of load balancing solutions are made to handle this problem. There are several drawbacks with the prior-art solutions. Load balancing is done above network layer, which requires specific signalling and dedicated nodes to do it. The prior art solutions are not standardized. Co-operation between different vendors' solutions is minimal, even non-existent. In the prior art solutions, servers usually need to be identical, in means of computing power.